package com.hhxy.web;

import com.alibaba.fastjson.JSON;
import com.hhxy.pojo.Brand;
import com.hhxy.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
    private BrandService service = new BrandService();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1、获取Service对象

        //2、接收请求数据
        //2.1 接收来自addBrand.html的JSON数据
//        String brandName = request.getParameter("brandName");
        /*
        System.out.println(brandName);//输出：null
        request对象无法直接获取JSON数据！原因是getParameter方法获取字符串是依靠&、=等特殊字符进行分辨的
        需要使用原始的获取参数的方式，注意post和get获取方式的差别
        */
        String params = null;//用于接收JSON字符串转
//        System.out.println(request.getMethod());
        //当请求方式是POST时
        if("GET".equals(request.getMethod())){
            //当请求方式是GET时
            System.out.println("Get方式");
            // (几乎很少会使用GET去传递JSON数据。说明：一般而言JSON用来是传比较复杂的数据，
            // 而GET只能携带少量数据，且不安全，所以只适合传递较为简短的数据)
        }else{
            System.out.println("Post方式");
            //当请求方式是POST时
            BufferedReader br = request.getReader();
            params = br.readLine();
        }
        //2.2 将JSON数据转换成Java对象　（反序列化）
        Brand brand = JSON.parseObject(params, Brand.class);
        System.out.println("打印来自前端的JSON数据："+brand);
        //3、调用service对象的方法，将数据添加到数据库中
        boolean flag = service.add(brand);
        //4、发送一个响应成功的标志
        if (flag) {
            response.getWriter().write("success");
        }
    }
}
